package day16MysSQL;


import com.alibaba.fastjson2.JSON;
import day16MysSQL.entity.ProjectClassEntity;

import java.sql.*;
import java.util.ArrayList;

public class Demo04SelectJDBC {

    public static void main(String[] args) throws SQLException {
        // 要使用jdbc, 先下载 jdbc的 MySQL驱动包 mysql-connector-java
        // 地址有很多:  https://search.maven.org/artifact/mysql/mysql-connector-java
        // 选择要使用的版本 下载 jar包
        // 在和src同级目录下,创建 lib 文件夹(libraries)

//        1. 注册驱动.
//        2. 获得连接.
//        3. 获得语句执行平台
//        4. 执行 sql 语句
//        5. 处理结果
//        6. 释放资源

        // 1. 注册驱动
        DriverManager.registerDriver(new com.mysql.jdbc.Driver());
        // 2.获得数据库连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/2307e_04?useSSL=false&serverTimeZone=Asia/Shanghai", "root", "root");

        // 3.获取运行sql语句的执行对象
        Statement state = conn.createStatement();

        String sql = "select * from project_class limit 0, 5";

        // 4.执行查询的sql语句, 返回结果的数据类型是 ResultSet,它用于保存执行查询SQL语句的结果
        // 因为不能一次性取出所有的数据,需要一行行的取出,所以在ResultSet内部提供了一个指针 记录获取到哪行数据
        // next() 将光标从当前位置向前移动一行 判断当前行是否有效
        ResultSet row = state.executeQuery(sql);
        System.out.println(row);

        ArrayList<ProjectClassEntity> list = new ArrayList<>();
        while (row.next()) {
            int id = row.getInt("id");
            int stuCount = row.getInt("stu_count");

            ProjectClassEntity entity = new ProjectClassEntity();
            entity.setId(id);
            entity.setStuCount(stuCount);

            list.add(entity);
        }
        row.close();
        state.close();
        conn.close();


        for (ProjectClassEntity entity : list) {
            // System.out.println(entity.toString());

            System.out.println(JSON.toJSONString(entity));;
        }
    }
}
